// 测试卡片颜色分配逻辑
const colorPalette = [
  '#52c41a', // 绿色
  '#1890ff', // 蓝色
  '#722ed1', // 紫色
  '#fa8c16', // 橙色
  '#13c2c2', // 青色
  '#eb2f96', // 粉色
  '#f5222d', // 红色
  '#faad14', // 黄色
  '#a0d911', // 青柠色
  '#2f54eb'  // 深蓝色
];

/**
 * 简单的哈希函数
 * @param {string} str 字符串
 * @returns {number} 哈希值
 */
function hashCode(str) {
  let hash = 0;
  if (str.length === 0) return hash;
  for (let i = 0; i < str.length; i++) {
    const char = str.charCodeAt(i);
    hash = ((hash << 5) - hash) + char;
    hash = hash & hash; // 转换为32位整数
  }
  return hash;
}

/**
 * 根据卡片ID获取固定的颜色索引
 * @param {number} cardId 卡片ID
 * @returns {number} 颜色索引
 */
function getColorIndex(cardId) {
  if (!cardId) return 0;
  // 使用卡片ID的哈希值来确保相同的卡片总是获得相同的颜色
  const hash = hashCode(cardId.toString());
  return Math.abs(hash) % colorPalette.length;
}

// 测试数据
const testCardIds = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];

console.log('卡片颜色分配测试:');
console.log('==================');

testCardIds.forEach(cardId => {
  const colorIndex = getColorIndex(cardId);
  const color = colorPalette[colorIndex];
  console.log(`卡片ID: ${cardId} -> 颜色索引: ${colorIndex} -> 颜色: ${color}`);
});

console.log('\n验证一致性测试:');
console.log('==================');

// 验证相同ID总是获得相同颜色
const testId = 123;
const colorIndex1 = getColorIndex(testId);
const colorIndex2 = getColorIndex(testId);
const colorIndex3 = getColorIndex(testId);

console.log(`卡片ID ${testId} 的多次测试:`);
console.log(`第1次: 颜色索引 ${colorIndex1}, 颜色 ${colorPalette[colorIndex1]}`);
console.log(`第2次: 颜色索引 ${colorIndex2}, 颜色 ${colorPalette[colorIndex2]}`);
console.log(`第3次: 颜色索引 ${colorIndex3}, 颜色 ${colorPalette[colorIndex3]}`);
console.log(`一致性检查: ${colorIndex1 === colorIndex2 && colorIndex2 === colorIndex3 ? '✅ 通过' : '❌ 失败'}`); 